SpringBoot自动配置原理简单分析 |
您所在的位置:网站首页 › spring bootcsdn › SpringBoot自动配置原理简单分析 |
说明:在SpringBoot项目中,我们添加了许许多多的注解,这些注解提高了开发效率。这是因为SpringBoot在项目启动时,帮我们自动装配了大量的Bean对象,可以通过分析源码查看自动装配的大致原理。 第一步:@SpringBootApplication进入到启动类中的@SpringBootApplication注解中,该注解里面有七个注解,上面四个是元注解,无需理会,下面三个注解分别表示: @SpringBootConfiguration:该注解内包含@Configuration注解,表明该类是一个配置类; @EnableAutoConfiguration:自动装配注解; @ComponentScan():组件扫描注解,项目启动时,会扫码启动类平级的类和子包中的类; 可以看出,这三个注解中@EnableAutoConfiguration是核心,进一步分析 第二步:@EnableAutoConfiguration该注解内,使用@Import()导入了一个自动装配选择器类(AutoConfigurationImportSelector),点开这个类分析 第三步:AutoConfigurationImportSelector.class进入到这个类中,可以找到一个自动装配配置的具体实现方法(getCandidateConfigurations()),进入该方法内分析 第四步:getCandidateConfigurations()该方法下面有一段提示,表示该方法的内容来自于这两个文件中的其中一个,并且该方法返回值类型是字符串类型的集合 第五步:在依赖管理中找到对应的文件找到对应上面方法中提示的对应文件,可以知道该文件内存的是各种Bean对象的全限定类名 (所有Bean对象的全限定类名) 总结SpringBoot自动配置原理大致如下:@SpringBootApplication注解中的,@EnableAutoConfiguration注解中的@Import注解,会自动装配AutoConfigurationImportSelector类,而该类中会执行一个getCandidateConfigurations()方法,该方法会读取SpringBoot文件中的一个文件(在Spring2.7.5 以前是spring.factories),该文件内存放着大量的Bean对象的全限定类名。在项目启动时,会有选择性的自动装配这些对象到IOC容器中。 之所以说有选择,是因为在源码中,还有一系列的选择注解,只有符合条件的对象才会被自动装配,例如以下三个: @ConditionalOnClass:判断环境中有对应字节码文件,才注册bean到IOC容器 @ConditionalOnMissingBean:判断环境中没有对应的bean(类型或名称),才注册bean到IOC容器 @ConditionalOnProperty:判断配置文件中有对应属性和值,才注册bean到IOC容器 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |